package com.smh.a01GenericsDemo1;

import java.util.ArrayList;
import java.util.ListIterator;

public class GenericsDemo1 {
    public static void main(String[] args) {
        //泛型
        //没有泛型时怎么存储数据
        //没有给定数据类型,默认存为object类型,
        //可以存储任意数据的类型
        //缺点,我们无法使用元素的特有行为
        //因此推出泛型,来统一管理数据类型
        //泛型就是在编译的时候检查一下,存的时候还是object类型
        //泛型不能写基本数据类型
        //可以传入该类型和其子类

        ArrayList arrayList = new ArrayList<>();

        Student<String> student = new Student("asd",12);
        arrayList.add("ad");
        arrayList.add(123);
        arrayList.add(student);

        System.out.println(arrayList);
        System.out.println("----------");
        ListIterator it = arrayList.listIterator();
        while (it.hasNext()){
            Object obj = it.next();
            //无法调用子类的方法
            System.out.println(obj);
        }





    }
static class Student<E>{
        private E name;
        private int age;

        public Student() {
        }


    public Student(E name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public E getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(E name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }
}

}
